package com.quick.im.common.util;

import com.google.protobuf.InvalidProtocolBufferException;

import com.quick.im.common.proto.Message;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageDecoder;

import java.util.List;

public class ProtobufDecoder extends MessageToMessageDecoder<ByteBuf> {

    @Override
    protected void decode(ChannelHandlerContext ctx, ByteBuf msg, List<Object> out) throws Exception {
        byte[] array = new byte[msg.readableBytes()];
        msg.readBytes(array);

        try {
            Message message = Message.parser().parseFrom(array);  // 使用 Protobuf 4.x 的 parser() 方法
            out.add(message);  // 解码后的消息
        } catch (InvalidProtocolBufferException e) {
            e.printStackTrace();
        }
    }
}
